const fs=require('fs');
const path=require('path')
console.log(fs.readdir('./src',function(vlaue,res){
    console.log(vlaue,res);
}));

// I/O 异步
function findLargest(dir,cb){ 
    fs.readdir(dir,function(err,files){
        // node 处理时，一般第一个参数是err
        if(err) return cb(err);
        let counter = files.length;
        let errored=false;

        // 有什么坑

        let stats=[];
        files.forEach((file,index)=>{
            console.log(file,index);
            fs.stat(path.join(dir,file),function(err,stat){
                // console.log(err,stat);
                if(errored) return;

                if(err){
                    errored=true;
                    return cb(err);
                }

                stats[index]=stat;
                // 最后一个元素
                if(--counter==0){
                    // console.log(stats,'////');
                    let largest=stats
                                .filter(function(stat){
                                    return stat.isFile();
                                })
                                .reduce(function(prev,next){
                                    if(prev.size>next.size) return prev;
                                    return next;
                                })
                    console.log(largest.size);
                    cb(null,files[stats.indexOf(largest)]);
                }
            });
        })

    })
}
// 将流程封装成函数

// callback
findLargest('./src',function(err,file){
    if(err) return console.error(err);
    console.log('largest file was:',file);
})
